Field of the Disclosure
The present disclosure relates to computing devices. In particular, but not by way of limitation, the present invention relates to reducing errors and retaining data in NAND-based flash memory devices.
Description of Related Art
In general, a flash memory device is a type of memory device that can retain stored digital data, even when no power is being provided to the device. NAND flash memories are one type of flash memory and are one of the most common storage devices in present day embedded systems. The most common devices in which one can find raw NAND flash cards in are mobile phones.
One limitation of NAND flash memory is that the method used to read NAND flash memory can cause bit-flips of cells surrounding the cell being read resulting in uncorrectable errors (or ECC errors). These errors are known as read disturb errors. NAND flash memory also suffers from data retention errors, where data that is stored in rarely accessed blocks is prone to being lost, for example, via disturbance from the reading and writing of nearby memory blocks.
Existing LINUX NAND flash memory drivers do not address read disturb and data retention errors, or sidestep them via error correction, because the possibility of their occurrence is very low. However, the ability to ignore these errors only applies because previous NAND flash memory was only expected to and designed to have lifespans under five years. With the development of “long life NAND,” devices having lifespans of 10-15 years, read disturb and data retention errors can no longer be ignored or dealt with via error correction alone. These devices are also being subject to higher temperatures, and the higher temperatures alone speed up read disturb and data retention errors. Thus in combination with the longer lifetimes of modern NAND devices, proper functioning requires these formerly ignored issued to be addressed.
Existing systems perform wear-leveling in order to address errors that can be caused by repeated erasing of memory blocks, but this is a different problem than read disturb and data retention errors, which result from a lack of erase operations. Wear-leveling systems typically include an erase counter and either perform scrubbing when the erase counter exceeds a threshold or when errors are observed. Thus, there is a need in the art to address errors caused by infrequent erase operations.